chrome.contextMenus.create({
	title: '使用谷歌翻译该句(英译中)', // %s表示选中的文字
	contexts: ['selection'], // 只有当选中文字时才会出现此右键菜单
	onclick: function(params)
	{
		// 注意不能使用location.href，因为location是属于background的window对象
    var uri=encodeURI('https://translate.google.cn/translate_a/single?client=webapp&sl=en&tl=zh-CN&hl=zh-CN&dt=at&dt=bd&dt=ex&dt=ld&dt=md&dt=qca&dt=rw&dt=rm&dt=ss&dt=t&source=bh&ssel=0&tsel=0&kc=1&tk='+tk(params.selectionText)+'&q='+params.selectionText);
    get(uri);
	}
});
chrome.contextMenus.create({
	title: '使用谷歌翻译该句(中译英)', // %s表示选中的文字
	contexts: ['selection'], // 只有当选中文字时才会出现此右键菜单
	onclick: function(params)
	{
    // 注意不能使用location.href，因为location是属于background的window对象
   var uri=encodeURI('https://translate.google.cn/translate_a/single?client=webapp&sl=zh-CN&tl=en&hl=zh-CN&dt=at&dt=bd&dt=ex&dt=ld&dt=md&dt=qca&dt=rw&dt=rm&dt=ss&dt=t&source=bh&ssel=0&tsel=0&kc=1&tk='+tk(params.selectionText)+'&q='+params.selectionText);
   get(uri);
	}
});
/**
* 创建XMLHttpRequest对象
*/
function createXMLHTTPRequest() {     
  //1.创建XMLHttpRequest对象     
  //这是XMLHttpReuquest对象无部使用中最复杂的一步     
  //需要针对IE和其他类型的浏览器建立这个对象的不同方式写不同的代码     
  var xmlHttpRequest;  
  if (window.XMLHttpRequest) {     
      //针对FireFox，Mozillar，Opera，Safari，IE7，IE8     
     xmlHttpRequest = new XMLHttpRequest();     
      //针对某些特定版本的mozillar浏览器的BUG进行修正     
      if (xmlHttpRequest.overrideMimeType) {     
          xmlHttpRequest.overrideMimeType("text/xml");     
      }     
  } else if (window.ActiveXObject) {     
      //针对IE6，IE5.5，IE5     
      //两个可以用于创建XMLHTTPRequest对象的控件名称，保存在一个js的数组中     
      //排在前面的版本较新     
      var activexName = [ "MSXML2.XMLHTTP", "Microsoft.XMLHTTP" ];     
      for ( var i = 0; i < activexName.length; i++) {     
          try {     
              //取出一个控件名进行创建，如果创建成功就终止循环     
              //如果创建失败，回抛出异常，然后可以继续循环，继续尝试创建     
             xmlHttpRequest = new ActiveXObject(activexName[i]);   
             if(xmlHttpRequest){  
                 break;  
             }  
          } catch (e) {     
          }     
      }     
  }     
  return xmlHttpRequest;  
}     

/**
* ajax get请求获取翻译结果
*/
function get(url){  
  var req = createXMLHTTPRequest();  
  if(req){  
      req.open("GET", url, true);  
      req.onreadystatechange = function(){  
          if(req.readyState == 4){  
              if(req.status == 200){  
                 var obj=eval('('+req.responseText+')');
                 alert("翻译成功!翻译结果为:"+obj[0][0][0]);
                }else{  
                alert("翻译出错!tk参数有误");
              }  
          }  
      }  
      req.send(null);  
  }  
}  

var TKK = ((function() {  
  var a = 561666268;  
  var b = 1526272306;  
  return 406398 + '.' + (a + b);  
})());  
function b(a, b) {  
  for (var d = 0; d < b.length - 2; d += 3) {  
      var c = b.charAt(d + 2),  
          c = "a" <= c ? c.charCodeAt(0) - 87 : Number(c),  
          c = "+" == b.charAt(d + 1) ? a >>> c : a << c;  
      a = "+" == b.charAt(d) ? a + c & 4294967295 : a ^ c  
  }  
  return a  
}  
/**
* tk参数算法[谷歌出来的]
*/
function tk(a) {  
    for (var e = TKK.split("."), h = Number(e[0]) || 0, g = [], d = 0, f = 0; f < a.length; f++) {  
        var c = a.charCodeAt(f);  
        128 > c ? g[d++] = c : (2048 > c ? g[d++] = c >> 6 | 192 : (55296 == (c & 64512) && f + 1 < a.length && 56320 == (a.charCodeAt(f + 1) & 64512) ? (c = 65536 + ((c & 1023) << 10) + (a.charCodeAt(++f) & 1023), g[d++] = c >> 18 | 240, g[d++] = c >> 12 & 63 | 128) : g[d++] = c >> 12 | 224, g[d++] = c >> 6 & 63 | 128), g[d++] = c & 63 | 128)  
    }  
    a = h;  
    for (d = 0; d < g.length; d++) a += g[d], a = b(a, "+-a^+6");  
    a = b(a, "+-3^+b+-f");  
    a ^= Number(e[1]) || 0;  
    0 > a && (a = (a & 2147483647) + 2147483648);  
    a %= 1E6;  
    return a.toString() + "." + (a ^ h)  
}
